From 8ea9d0d7f7acb6afd0d9a42d5e7c7f83f9444fe4 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sat, 30 Sep 2017 18:50:53 +0100 Subject: [PATCH] mw.loader: Use Array#indexOf directly instead of jQuery.inArray Unlike other jQuery methods (which are quite often significantly faster or slower than native methods), jQuery.inArray is quite literally a wrapper around Array#indexOf. Use it directly where possible. Also: * Replace `$.inArray(val, [a, b]) !== -1` pattern with `val === a || val === b` which is upto 10x faster. * mw.loader.store.set.: Remove redundant parenthesis in nested expression. Change-Id: Ia2b922b3245bfb39b609b57e84938317e9c89cd6 --- resources/src/mediawiki/mediawiki.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/resources/src/mediawiki/mediawiki.js b/resources/src/mediawiki/mediawiki.js index aae292d902..9a347f2567 100644 --- a/resources/src/mediawiki/mediawiki.js +++ b/resources/src/mediawiki/mediawiki.js @@ -1127,7 +1127,7 @@ registry[ module ].dependencies = [ registry[ module ].dependencies ]; } } - if ( $.inArray( module, resolved ) !== -1 ) { + if ( resolved.indexOf( module ) !== -1 ) { // Module already resolved; nothing to do return; } @@ -1138,7 +1138,7 @@ // Tracks down dependencies deps = registry[ module ].dependencies; for ( i = 0; i < deps.length; i++ ) { - if ( $.inArray( deps[ i ], resolved ) === -1 ) { + if ( resolved.indexOf( deps[ i ] ) === -1 ) { if ( unresolved.has( deps[ i ] ) ) { throw new Error( mw.format( 'Circular reference detected: $1 -> $2', @@ -1478,7 +1478,7 @@ var state = mw.loader.getState( module ); // Only queue modules that are still in the initial 'registered' state // (not ones already loading, ready or error). - if ( state === 'registered' && $.inArray( module, queue ) === -1 ) { + if ( state === 'registered' && queue.indexOf( module ) === -1 ) { // Private modules must be embedded in the page. Don't bother queuing // these as the server will deny them anyway (T101806). if ( registry[ module ].group === 'private' ) { @@ -1759,7 +1759,7 @@ // Only load modules which are registered if ( hasOwn.call( registry, queue[ q ] ) && registry[ queue[ q ] ].state === 'registered' ) { // Prevent duplicate entries - if ( $.inArray( queue[ q ], batch ) === -1 ) { + if ( batch.indexOf( queue[ q ] ) === -1 ) { batch.push( queue[ q ] ); // Mark registered modules as loading registry[ queue[ q ] ].state = 'loading'; @@ -1960,7 +1960,7 @@ registry[ name ].messages = messages || null; registry[ name ].templates = templates || null; // The module may already have been marked as erroneous - if ( $.inArray( registry[ name ].state, [ 'error', 'missing' ] ) === -1 ) { + if ( registry[ name ].state !== 'error' && registry[ name ].state !== 'missing' ) { registry[ name ].state = 'loaded'; if ( allReady( registry[ name ].dependencies ) ) { execute( name ); @@ -2108,7 +2108,7 @@ mw.loader.register( module ); } registry[ module ].state = state; - if ( $.inArray( state, [ 'ready', 'error', 'missing' ] ) !== -1 ) { + if ( state === 'ready' || state === 'error' || state === 'missing' ) { // Make sure pending modules depending on this one get executed if their // dependencies are now fulfilled! handlePending( module ); @@ -2340,11 +2340,13 @@ // Module failed to load descriptor.state !== 'ready' || // Unversioned, private, or site-/user-specific - ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user' ] ) !== -1 ) || + !descriptor.version || + descriptor.group === 'private' || + descriptor.group === 'user' || // Partial descriptor // (e.g. skipped module, or style module with state=ready) - $.inArray( undefined, [ descriptor.script, descriptor.style, - descriptor.messages, descriptor.templates ] ) !== -1 + [ descriptor.script, descriptor.style, descriptor.messages, + descriptor.templates ].indexOf( undefined ) !== -1 ) { // Decline to store return false; -- 2.20.1